// FilePicker.kt
package com.sanji.capture_audio.utils

import android.app.Activity
import android.content.Intent
import android.net.Uri
import android.provider.DocumentsContract
import android.provider.MediaStore
import android.database.Cursor
import java.io.InputStream
import android.util.Log

/**
 * 文件URI处理工具类
 * 提供对URI的处理功能，包括选择文件和处理URI
 */
class FilePicker {
    companion object {
        const val REQUEST_CODE_SELECT_FILE = 1001
        const val REQUEST_CODE_SELECT_FOLDER = 1002
        
        /**
         * 选择文件并获取URI
         * @param activity 调用的Activity
         */
        fun getFileUri(activity: Activity) {
            val intent = Intent(Intent.ACTION_GET_CONTENT)
            intent.type = "*/*"  // 可以选择所有类型的文件
            intent.addCategory(Intent.CATEGORY_OPENABLE)
            activity.startActivityForResult(
                Intent.createChooser(intent, "选择文件"),
                REQUEST_CODE_SELECT_FILE
            )
            Log.d("FilePicker", "开始选择文件")
        }

        /**
         * 选择文件夹并获取URI（用于保存录音）
         * @param activity 调用的Activity
         */
        fun getFolderUri(activity: Activity) {
            val intent = Intent(Intent.ACTION_OPEN_DOCUMENT_TREE).apply {
                addCategory(Intent.CATEGORY_DEFAULT)
            }
            activity.startActivityForResult(
                intent,
                REQUEST_CODE_SELECT_FOLDER
            )
            Log.d("FilePicker", "开始选择文件夹")
        }
        
        /**
         * 从ActivityResult中解析文件URI
         * @param requestCode 请求码
         * @param resultCode 结果码
         * @param data 返回数据
         * @return 文件URI，如果无效则返回null
         */
        fun handleFileResult(requestCode: Int, resultCode: Int, data: Intent?): Uri? {
            if (resultCode != Activity.RESULT_OK) {
                return null
            }
            
            return when (requestCode) {
                REQUEST_CODE_SELECT_FILE -> {
                    val uri = data?.data
                    if (uri != null) {
                        Log.d("FilePicker", "成功获取文件URI: $uri")
                    } else {
                        Log.d("FilePicker", "未获取到有效文件URI")
                    }
                    uri
                }
                REQUEST_CODE_SELECT_FOLDER -> {
                    val uri = data?.data
                    if (uri != null) {
                        Log.d("FilePicker", "成功获取文件夹URI: $uri")
                    } else {
                        Log.d("FilePicker", "未获取到有效文件夹URI")
                    }
                    uri
                }
                else -> null
            }
        }
        
        /**
         * 在指定文件夹中创建录音文件的URI
         * @param folderUri 文件夹URI
         * @param fileName 文件名
         * @return 录音文件的完整URI
         */
        fun createRecordingFileUri(folderUri: Uri, fileName: String): Uri {
            // 构造文件URI，格式为: folderUri/fileName
            return Uri.withAppendedPath(folderUri, fileName)
        }
    }
}